// 服务端接受连接后，不接收数据而是不停的发送测试数据。
#ifndef MUDUO_EXAMPLES_SIMPLE_CHARGEN_CHARGEN_H
#define MUDUO_EXAMPLES_SIMPLE_CHARGEN_CHARGEN_H
#include <muduo/net/TcpServer.h>

// RFC 864
class ChargenServer {
public:
	ChargenServer(muduo::net::EventLoop *loop, const muduo::net::InetAddress &listenAddr, bool print = false);
	void Start();

private:
	void OnConnection(const muduo::net::TcpConnectionPtr &conn);
	void OnMessage(const muduo::net::TcpConnectionPtr &conn,
		           muduo::net::Buffer *buf,
		           muduo::Timestamp time);
	void OnWriteComplete(const muduo::net::TcpConnectionPtr &conn);
	void PrintThroughput();

	muduo::net::TcpServer server_;
	muduo::string message_;
	int64_t transfered_;
	muduo::Timestamp startTime_;
};

#endif // MUDUO_EXAMPLES_SIMPLE_CHARGEN_CHARGEN_H
